AWS入門ブログリレー2024〜EC2 Image Builder 編〜
こんにちは!AWS事業本部のおつまみです。
当エントリは弊社AWS事業本部による『AWS 入門ブログリレー 2024』の45日目のエントリです。
このブログリレーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。
AWS をこれから学ぼう!という方にとっては文字通りの入門記事として、またすでに AWS を活用されている方にとっても AWS サービスの再発見や 2024 年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。
では、さっそくいってみましょう。今回のテーマは『EC2 Image Builder』です。
EC2 Image Builderとは?
EC2 Image Builder は、OS イメージの ビルド / カスタマイズ / デプロイを容易にする完全マネージド型サービスです。 ざっくりいうとゴールデンイメージの作成をCI/CD化できるサービスです。 ゴールデンイメージとは、ソフトウェアの配布やインストール時に使用される基本的な状態のシステムイメージを指します。
EC2と名前に付いていますが、EC2以外にもオンプレミスの仮想マシンイメージ(VM イメージ)やコンテナイメージも作成可能です。
EC2 Image Builderの動作
EC2 Image Builderでイメージを作成する際はこのように裏側でEC2を起動させて、イメージの構築とテストを行っています。
それぞれのフェーズをビルドステージ・テストステージと呼んでいます。
EC2 Image Builderの用語
コンソール画面には、左ペインにEC2 Image Builder を知る上で、必要な用語がずらっと並んでいます。
それぞれの用語について、図解したものがこちらです。(イメージワークフローとライフサイクルポリシーは任意設定のため、割愛しています。)
はじめてEC2 Image Builder を触る方にわかりやすいようにこれらの要素を料理に例えてみました。
1つずつ用語を解説するので、上の図と見比べながら読み進めていきましょう。
イメージパイプライン
イメージの作成を自動化するためのImageBuilder全体の構成設定となります。
これから解説するイメージレシピ、インフラストラクチャ設定、ディストリビューション設定と、それを実行するビルドスケジュールをパイプラインとして定義します。
そして、このイメージパイプラインを実行させることでイメージが作成されます。
料理に例えると、調理工程全体を指し、食材の準備から盛り付けまでの一連の流れとなります。
イメージレシピ・コンテナレシピ
作成するイメージの設計書となります。
EC2の場合は、イメージレシピ。コンテナの場合はコンテナレシピとなります。
この後解説するソースイメージと、それに適用するコンポーネントをまとめて定義したものとなります。
料理に例えると、料理のレシピです。どんな食材や調味料を使って、どのような手順で料理を作るかを定義したものとなります。
ベースイメージ
作成するイメージの大元になるOSイメージです。 レシピ作成時にこのように複数のOSを選択できるようになっています。
なお、2024/5時点でRHEL9など一部のOSはサポートしていないので、必ず作成したイメージのOSがサポートされているかドキュメントで確認しましょう。
サポートされるオペレーティングシステム - EC2 Image Builder
料理に例えると、大元の食材を指します。(ハンバーグだったらお肉ですね。)
コンポーネント
ベースイメージをカスタマイズするための部品です。
ビルドコンポーネント
とテストコンポーネント
の2種類のコンポーネントが用意されています。
- ビルドコンポーネント・・ソフトウェアパッケージのダウンロード、インストール、および構成の手順を定義するドキュメント
- テストコンポーネント・・ソフトウェアパッケージで実行するテストを定義するドキュメント
CloudWatch AgentのインストールやOS再起動といったよく使用されるコンポーネントはAWS管理で提供されているものをそのまま組み合わせて、使用することができます。
- ビルドコンポーネント
-
テストコンポーネント
AWS管理で提供されていない場合は、自分でコンポーネント用のドキュメントを定義することも可能です。
こちらのブログは、EC2 Image Builderでは日本語版のWindows OSが提供されていないため、ビルドコンポーネントで日本語化させる対応をした例となります。
料理に例えると、コンポーネントは料理に使う食材や調味料を指します。
インフトラストラクチャ設定
イメージ作成時に起動するEC2インスタンスのインスタンスタイプ、インスタンスプロファイル、セキュリティグループ、VPC設定などの環境構築に関する設定を定義します。 EC2を起動させるサブネットがプライベートサブネットの場合は、NAT GatewayやPrivateLinkの作成が必須となるので、注意しましょう。
Q. イメージ作成用 EC2 の Private Subet 作成についてですが、処理の順番などの仕様から HTTP プロキシサーバの利用では対応不可という理解で正しいでしょうか? A. ご認識の通りです。お手数をおかけしますが、Private Subnet で作業を行いたい場合は、NAT ゲートウェイを作成して、EC2 を作成するサブネットからルーティングする構成をご検討下さい。
引用:[AWS Black Belt Online Seminar] AWS EC2 Image Builder 資料及び QA 公開 | Amazon Web Services ブログ
料理に例えると、調理に使用する調理器具を指します。
ディストリビューション設定
作成したイメージの配布方法を定義します。
例えば、どのリージョンにコピーするかや、どのアカウントに共有するかなどを設定できます。
特定のアカウントやOrganizationと連携させ、子OUや組織全体に配布することが可能です。
料理に例えると、どんなお客さまにどこで提供するか料理を提供する方法となります。
ビルドスケジュール
実行スケジュールを設定し、定期的に新しいイメージを作成することができます。
スケジュールで定期的に実行することもできますが、ベースイメージのAMIが更新された場合にビルドするといったことも可能です。
これにより常に最新のバージョンのイメージを保つことができるようになります。
料理に例えると、料理を提供してほしい実行タイミングとなります。
イメージ
ビルド・テストステージを得て作成されたイメージとなります。
このように1つのイメージパイプラインで複数バージョンのイメージを管理することも可能です。
料理に例えると、完成された料理そのものを指します。
以上が、EC2 Image Builderでイメージ作成時に必要な要素となります。
必須要素ではありませんが、左ペインにあるこちらの用語についても、触れておきます。
イメージワークフロー
こちらは2023/12に追加された機能で、イメージパイプラインがイメージのビルドとテストに使用するワークフローをカスタマイズするときに使用します。 具体的なユースケースとしては、ビルド→テストステージにすぐに遷移させずに、テスト前に承認ワークフローを包含させたりしたい場合に使用します。
イメージワークフローを一覧表示する - EC2 Image Builder
ライフサイクルポリシー
こちらは2023/11に追加された機能で、古いイメージを削除する機能となります。
これにより、古いイメージを削除したり非推奨にしたりといった部分を自動化することが出来るようになるので、可能な限り設定するようにしましょう。
EC2 Image Builderの料金
EC2 Image Builder自体は無料です。
しかし、下記に料金が発生するので、注意が必要です。
- EC2 Image Builder実行時に起動するEC2インスタンス
- 作成されたAMIのEBS料金
AMI作成による課金を最小限に抑えるためにも、先ほどお伝えしたライフサイクルポリシーは設定をしましょう。
やってみよう!
EC2 Image builder は実際に触ってみることで、理解が進みます。ぜひトライしてみましょう!
- 弊社やってみたブログ
- AWS公式ハンズオン
3行まとめ
- EC2 Image Builderは、OSイメージのビルド・カスタマイズ・デプロイを自動化する完全マネージド型サービス
- イメージの作成プロセスをパイプラインとして定義し、ソースイメージ、レシピ、コンポーネントなどの要素を組み合わせることでカスタマイズされたイメージを効率的に作成可能
- イメージのバージョン管理、検証、デプロイが容易になり、一貫したイメージを提供可能
終わりに
以上、『AWS 入門ブログリレー 2024』の45日目のエントリ『EC2 Image Builder』編でした。 次回、5/16は弊社Toda Tomohiroによる「AWS Compute Optimizer編」の予定です!
最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。
以上、おつまみ(@AWS11077)でした!